package top.gangster.lunan.contractservice.service.vo;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.Map;
import top.gangster.lunan.contractservice.entity.Contract;
import top.gangster.lunan.contractservice.entity.vo.ContractVo;

public interface ContractVoService {

	/**
	 * 根据ContractId获取ContractVo
	 * @param contractId 合同id
	 * @return contractVo
	 */
	ContractVo getVoByContractId(String contractId);

	/**
	 * 根据ContractIdList获取ContractVoList
	 * @param contractIdList 合同id集合
	 * @return contractVoList
	 */
	List<ContractVo> getVoByContractIdList(List<String> contractIdList);

	/**
	 * 根据Contract获取ContractVo
	 * @param contract 合同
	 * @return 合同Vo对象
	 */
	ContractVo getVoByContract(Contract contract);

	/**
	 * 根据List of Contract 获取 List of ContractVo
	 * @param contractList List of Contract
	 * @return List of ContractVo
	 */
	List<ContractVo> getVoByContractList(List<Contract> contractList);

	/**
	 * 根据合同类型id查询所有合同vo
	 * @param typeId 合同类型id
	 * @return 所有该类型的合同vo
	 */
	List<ContractVo> getVoByContractTypeId(Integer typeId);

	/**
	 * 根据合同类型id分页查询所有合同vo
	 * @param typeId 合同类型id
	 * @param current 当前页
	 * @param limit 页大小
	 * @return 分页查询结果
	 */
	Page<ContractVo> getVoByContractTypeId(Integer typeId,Long current,Long limit);

	/**
	 * 根据合同状态id查询所有合同
	 * @param stateId 合同状态id
	 * @return 所有该状态的合同vo
	 */
	List<ContractVo> getVoByContractStateId(Integer stateId);

	/**
	 * 根据合同状态id分页查询所有合同vo
	 * @param stateId 合同状态id
	 * @param current 当前页
	 * @param limit 页大小
	 * @return 分页查询结果
	 */
	Page<ContractVo> getVoByContractStateId(Integer stateId,Long current,Long limit);

	/**
	 * 多条件查询合同
	 * @param conditions 条件集合
	 * @return 符合条件的模板
	 */
	List<ContractVo> MultiConditionSelect(Map<String,String> conditions);
}
